package com.iee.patterns.example.strategy.invoker;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 *@ClassName InvokerHolder
 *@Description 执行器管理者
 *@Author longxiaonan@163.com
 *@Date 2021/6/30 0030 17:19
 */
public class InvokerHolder {

    public static Map<Short, Map<Short, Invoker>> invokers = new HashMap<>();

    /**
     * 添加执行器
     * @param module
     * @param cmd
     * @param invoker
     */
    public static void addInvoker(short module, short cmd, Invoker invoker){
        Map<Short, Invoker> map = invokers.get(module);
        if(Objects.isNull(map)){
            map = new HashMap<>();
            invokers.put(module, map);
        }
        map.put(cmd, invoker);
    }

    /**
     * 获取执行器
     * @param module
     * @param cmd
     * @return
     */
    public static Invoker getInvoker(short module, short cmd){
        Map<Short, Invoker> map = invokers.get(module);
        if(map != null){
            return map.get(cmd);
        }
        return null;
    }

}
